/*
 * Author: 李波(Edwin Lee)
 * Date: 2024-08-19 13:12:50
 * FilePath: /mprpc/example/caller/callfriendservice.cc
 * LastEditTime: 2024-08-20 07:18:49
 * version: 1.0
 * Description: 
 */

#include "mprpcapplication.h"
#include "friend.pb.h"
#include <iostream>


int main(int argc,char** argv)
{
    // 整个程序启动以后，想使用mprpc框架来享受rpc服务调用，一定需要先调用框架的初始化函数（只初始化一次）
    MprpcApplication::init(argc,argv);


    fixbug::FriendServiceRpc_Stub stub(new MprpcChannel());
    // rpc方法的请求参数
    fixbug::GetFriendsListRequest request;
    request.set_userid(9999);
    fixbug::GetFriendsListResponse response;
    MprpcController controller;
    // 发起rpc方法的调用，同步的rpc调用过程，MprpcChannel::callmethod
    stub.GetFriendsList(&controller,&request,&response,nullptr);

    if(controller.Failed())
    {
        std::cout << controller.ErrorText() << std::endl;
    }
    else 
    {
        // 一次rpc调用完成，读调用的结果
        if(0 == response.result().errcode())
        {
            std::cout << "rpc GetFriendsList response sucess! "  << std::endl;
            int size = response.friends_size();
            for(int i=0; i<size; ++i)
            {
                std::cout << "index: " << (i+1) <<" name: " << response.friends(i) << std::endl;
            }
        }
        else 
        {
            std::cout << "rpc GetFriendsList response error: " << response.result().errmsg() << std::endl;
        }
    }

    return 0;
}